{
  interface PromiseConstructor {
    all<T extends readonly unknown[] | []>(
      values: T,
    ): Promise<{
      -readonly [P in keyof T]: Awaited<T[P]>;
    }>;

    race<T extends readonly unknown[] | []>(values: T): Promise<Awaited<T[number]>>;
  }

  type res = [Promise<1>, Promise<2>, Promise<3>];

  type res2 = [Promise<1>, Promise<2>, Promise<3>][number];
}
